package com.ruoyi.service.jpjs.progressplan;

import com.ruoyi.domain.jpjs.common.progressplan.*;

import java.util.List;
import java.util.Map;

/**
 * @author C.fw
 * @explain 进度计划业务层
 * @since 2021/2/22 10:15
 */
public interface ProgressplanService {

    /**
     * 根据筛选条件获取进度计划
     *
     * @param map
     * @return 结果
     */
    List<Progressplan> selectProgressList(Map<String, Object> map);

    /**
     * 新增进度计划信息
     *
     * @param progressplan 进度计划集合
     * @return 新增条数
     */
    public int addProgress(Progressplan progressplan);

    /**
     * 根据ID查询进度计划
     *
     * @param map
     * @return 进度计划
     */
    public Map<String, Object> selectProgressById(Map<String, Object> map);

    /**
     * 根据ID更新进度计划
     *
     * @param progressplan
     * @return 进度计划
     */
    public int updateProgressById(Progressplan progressplan);

    /**
     * 根据ID删除进度计划
     *
     * @param progressArr 报表标识
     * @return 结果
     */
    public int deleteProgressById(String progressArr);

    /**
     * 根据筛选条件获取进度计划详情
     *
     * @param map
     * @return 结果
     */
    List<ProgressplanDetail> selectDetailListByProgressId(Map<String, Object> map);

    /**
     * 新增进度计划详情信息
     *
     * @param progressplanDetailParam 进度计划详情集合
     * @return 新增条数
     */
    public int addProgressDetail(ProgressplanDetailParam progressplanDetailParam);

    /**
     * 获取详情列表
     *
     * @param map
     * @return 结果
     */
    List<ProgressplanRemark> selectRemarksByProgressId(Map<String, Object> map);

    /**
     * 工程公司、项目名称、楼栋号、节点名称唯一性校验
     *
     * @param progressplan
     * @return
     */
    public boolean checkNodeUnique(Progressplan progressplan);

    /**
     * 循环初始化首页面数据
     *
     * @param list
     * @return
     */
    public List<Progressplan> loopFormatData(List<Progressplan> list);

    /**
     * 编辑保存之前数据处理
     *
     * @param progressplan
     * @return
     */
    public boolean handleEdit(Progressplan progressplan);

    /**
     * 新增页面 初始化数据
     * @param progressplan
     * @return
     */
    public List<ProgressplanRemark> readyForAddView(Progressplan progressplan);

    /**
     * 新增保存前 校验和新增进度详情
     * @param progressplanDetailParam
     * @return
     */
    public boolean handleDataForSave(ProgressplanDetailParam progressplanDetailParam);

    /**
     * 新增进度计划信息
     *
     * @param progressplan 进度计划集合
     * @return 新增条数
     */
    public int addProgressImg(Progressplan progressplan);

    /**
     * 新增进度计划信息
     *
     * @param progressplan 进度计划集合
     * @return 新增条数
     */
    public Progressplan selectImg(Map<String, Object> map);

    /**
     * 根据ID删除动态信息附件
     *
     * @param detailId 创优工程动态信息ID
     * @return 结果
     */
    Boolean deleteFilePathById(Integer progressId);

    /**
     * 更新图片路径
     * @param progressId
     * @return
     */
    int updatePathById(Integer progressId);

    /**
     * 查询项目信息
     *
     * @return 结果
     */
    List<Progressplan> queryProgramList();

    /**
     * 获取项目分组
     * @return
     */
    List<Progressplan> queryProjectGroupByProgram();

    /**
     * 查询项目月份完成率
     *
     * @return 结果
     */
    List<Progressplan> queryActualFinishRate(Progressplan progressplan);

    /**
     * 新增进度计划统计详情
     *
     * @param list 进度计划统计详情
     * @return 新增条数
     */
    public int insertStatisticBatches(List<Progressplan> list);

    /**
     * 根据项目ID删除统计表
     *
     * @param progressplan 报表标识
     * @return 结果
     */
    public int deleteStatisticByProgramId(Progressplan progressplan);

    /**
     * 查询项目统计信息
     *
     * @return 结果
     */
    List<Progressplan> queryStatisticList(Progressplan progressplan);

    /**
     * 计划完成率 查询项目统计信息
     *
     * @return 结果
     */
    List<Progressplan> queryPlanFinishRate(Map<String, Object> map);

    /**
     * 计划完成率 查询项目统计信息
     *
     * @return 结果
     */
    List<Progressplan> queryDynamicRate(Map<String, Object> map);

    /**
     * 计划完成率 查询项目统计信息
     *
     * @return 结果
     */
    List<Progressplan> queryActualRate(Map<String, Object> map);

    /**
     * 更新状态
     *
     * @param progressplan
     * @return
     */
    public int updateStatusByProgramId(Progressplan progressplan);

    /**
     * 查询项目统计信息
     *
     * @return 结果
     */
    List<ProgressplanStatistic> queryStatisticListExport(Map<String, Object> map);
}
